package com.test15_异常;

import org.junit.Test;

/**
 * throws关键字
 */
public class YootkDemo_02 {

    @Test
    public void test1() {
        try {
            System.out.println("【除法计算】" + MyMath.div(10, 0));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test2() throws Exception {
        // 直接在主方法上编写throws关键字，表示程序产生异常，将由JVM进行处理
        System.out.println("【除法计算】" + MyMath.div(10, 0));
    }

    @Test
    public void test3() throws Exception {
        System.out.println("【除法计算】" + MyMath2.div(10, 0));
    }
}

class MyMath {  // 数学计算类

    public static int div(int x, int y) throws Exception {    // 有可能产生异常
        // 由于有了throws关键字的出现，所以此方法产生的异常将向上继续抛出，抛给调用它的代码处
        return x / y;
    }
}

class MyMath2 {

    public static int div(int x, int y) throws Exception {    // 有可能产生异常
        if (y == 0) {
            // 通过throw关键字，实现异常对象的抛出
            throw new ArithmeticException("【Exception】被除数为0");
        }
        return x / y;
    }
}
